const { getMissingKeys } = require("../config/parameter");
const { PARAMETER_MISSING } = require("../config/error-constants");

/* 验证body数据是否有 */
const verifyBody = (PARAMETER) => {
  return async (ctx, next) => {
    const parameter = {};
    parameter.uid = ctx.userInfo.id;
    const requestParameter = ctx.request.body;
    Object.assign(parameter, requestParameter);

    const verifyParameter = getMissingKeys(PARAMETER, requestParameter);
    if (verifyParameter.length) {
      return ctx.app.emit("error", PARAMETER_MISSING, ctx, verifyParameter);
    } else {
      ctx.parameterData = parameter;
      await next();
    }
  };
};

/* 验证Query数据是否有 */
const verifyQuery = (PARAMETER, Auth = false) => {
  return async (ctx, next) => {
    const parameter = {
      ...ctx.query,
    };
    if (Auth) {
      parameter.uid = ctx.userInfo.id;
    }
    const verifyParameter = getMissingKeys(PARAMETER, parameter);
    if (verifyParameter.length) {
      return ctx.app.emit("error", PARAMETER_MISSING, ctx, verifyParameter);
    } else {
      ctx.parameterData = parameter;
      await next();
    }
  };
};

module.exports = {
  verifyBody,
  verifyQuery,
};
